package com.momo.service.sysSetting;

import com.momo.common.common.JSONResult;
import com.momo.common.req.sysSetting.group.UserGroupReq;
import com.momo.common.req.sysSetting.authority.BatchRoleUserReq;
import com.momo.common.req.sysSetting.authority.RoleReq;
import com.momo.common.req.sysmain.RedisUser;
import com.momo.common.res.authority.LoginAuthReq;

/**
 * Created by MOMO on 2019/3/22.
 * 总部角色和第三方角色管理
 */
public interface SysRoleService {
    /**
     * 新增角色(总部/企业)
     *
     * @param roleReq
     * @param redisUser
     * @return
     */
    public JSONResult add(RoleReq roleReq, RedisUser redisUser);

    /**
     * 编辑角色(总部/第三方)
     *
     * @param roleReq
     * @param redisUser
     * @return
     */
    public JSONResult modify(RoleReq roleReq, RedisUser redisUser);

    /**
     * 角色(总部/第三方) 状态
     *
     * @param roleReq
     * @param redisUser
     * @return
     */
    public JSONResult status(RoleReq roleReq, RedisUser redisUser);

    /**
     * 角色(总部/第三方) 详情
     *
     * @param roleReq
     * @param redisUser
     * @return
     */
    public JSONResult detail(RoleReq roleReq, RedisUser redisUser);

    /**
     * 角色分页 只可以查询自己企业的
     *
     * @param roleReq
     * @param redisUser
     * @return
     */
    public JSONResult rolePage(RoleReq roleReq, RedisUser redisUser);

    /**
     * 角色列表给用户
     *
     * @param batchRoleUserReq
     * @param redisUser
     * @return
     */
    public JSONResult rolesToUser(BatchRoleUserReq batchRoleUserReq, RedisUser redisUser);

    /**
     * 权限列表给角色
     *
     * @param batchRoleUserReq
     * @param redisUser
     * @return
     */
    public JSONResult aclsToRole(BatchRoleUserReq batchRoleUserReq, RedisUser redisUser);

    /**
     * //为角色授权 权限 之前， 需要查看该角色拥有哪些权限点，以及当前登录用户可以操作哪些权限
     *
     * @param loginAuthReq
     * @param redisUser
     * @return
     */
    public JSONResult roleHaveAclTree(LoginAuthReq loginAuthReq, RedisUser redisUser);

    /**
     * 为企业/VIP 赋予权限 之前， 需要查看该企业管理员角色拥有哪些权限点，以及当前登录用户可以操作哪些权限
     *
     * @param userGroupReq
     * @param redisUser
     * @return
     */
    public JSONResult vipRoleHaveAclTree(UserGroupReq userGroupReq, RedisUser redisUser);

    /**
     * 为企业管理员角色授权
     *
     * @param batchRoleUserReq
     * @param redisUser
     * @return
     */
    public JSONResult vipAdminRoleToAcls(BatchRoleUserReq batchRoleUserReq, RedisUser redisUser);

    /**
     * 查询某个企业下的所有角色
     *
     * @param batchRoleUserReq
     * @param redisUser
     * @return
     */
    public JSONResult userHasRoles(BatchRoleUserReq batchRoleUserReq, RedisUser redisUser);
}
